1. Field of the Invention
This invention relates to a unit sending data packets to another unit through a communication medium or a link coupled between the units, and acknowledgement of data packets by the receiving unit.
2. Description of the Prior Art
Various techniques for acknowledging message packets in a communication system have been used, including ACK/NAK and sequencing protocols.
With the ACK/NAK protocol, a transmitting unit transmits a data packet to a receiving unit. If a receiving unit receives the packet, the receiving unit acknowledges receipt of the packet by transmitting back either an "ACK" acknowledgment signal indicating that the packet is correctly received, or a "NAK" no acknowledge signal indicating that the message is received, but not used. The NAK signal can indicate that there is an error in the received data or that the receiving unit is busy and cannot accept or use the data until a later time. If a NAK is received, the transmitting unit can automatically retransmit the data packet. The ACK or NAK signal is returned after each packet is sent, and before the next packet is sent. If the transmitting unit does not receive the expected ACK or NAK, from the receiving unit during an interval of time (called a time out interval) after transmission, the transmitting unit retransmits the same data packet. If an ACK signal is lost or garbled in transmission back to the transmitting unit, the transmitting unit will wait for the time out interval to elapse and then retransmit the data packet, even though the data packet was correctly received and used. If the communication medium is noisy or unreliable, time is wasted waiting for time outs and retransmitting data which has already been transmitted correctly, reducing the throughput of data, or performance for the communication system.
With the sequencing protocol, however, an acknowledgement is not necessarily sent after every packet; an acknowledgement may be sent after a group of packets is sent. The number of packets in the group can be selected based upon the reliability of the medium and transit or propagation time delays waiting for an acknowledgement to come back via the medium. When the medium conveys data reliably, the sequencing protocol can achieve higher data rates than the ACK/NAK protocol because less time is used by the receiver sending acknowledgements and by the transmitter waiting for acknowledgements.
With the sequencing protocol, counters in the transmitting and receiving units are synchronized at the start of the transmission of a group of packets. The transmitting unit's counter is incremented each time a packet is sent. The packet includes data indicating the count of the transmitting unit's counter. The receiving unit's counter is incremented only if a packet is received correctly and in proper sequence as indicated by the count. Thus, if one packet is not received correctly, all the following packets are ignored even if they are correctly received. After a packet, or a series of packets have been correctly received, the count of the receive counter is sent back to the transmitting unit as an acknowledgement signal to be compared to the count of the transmit counter. If no response is received by the transmitting unit after an interval of time (a time out interval), the transmitting unit begins retransmitting packets beginning with the first packet for which no acknowledgment was received. Then, all of the packets sent after that first lost packet must be retransmitted, even though many of them may have been accurately received already. The retransmission process is repeated until all of the packets in the group are received, as indicated when the transmit counter equals the last received receive counter.
In communication systems using a communication medium that is not near 100% reliable, both the ACK-NAK and the sequencing protocol suffer severe increases in the time required to send a series of message packets. With the ACK-NAK protocol, time is consumed by unnecessary time-outs and duplicate transmissions. With the sequencing protocol, time is consumed by unnecessary transmission of duplicate packets.
Thus a communication protocol is desired that transmits packets without waiting for an acknowledgment after each packet is sent from the receiving node and also with reduced transmission of unneeded duplicate message packets.